package regex;
/**
 * 预定义字符类:
 * . 任何字符（与行结束符可能匹配也可能不匹配）
 * \d 数字：[0-9]
 * \w 单词字符：[a-zA-Z_0-9]
 */
public class RegexDemo05 {
    public static void main(String[] args) {
        System.out.println("a".matches("."));  // true
        System.out.println("1".matches("."));  // true
        System.out.println("*".matches(".")); // true
        System.out.println("aa".matches(".")); // false
        System.out.println("aa".matches("..")); // true

        System.out.println(".".matches("."));
           // 如果regex里的' . '就是一个点的意思，不是匹配任意字符，只匹配点
           // 由于 " . "字符在正则表达式中代表特殊含义(匹配任意字符)，因此我们需要通过" \ "进行转义
        // System.out.println(".".matches("\."));
        System.out.println(".".matches("\\."));
                // 第二个" \ "是为了转义“ . ”    第一个“ \ ” 是为了转义第二个“ \ ”
                // 从而将“ . ”转义为普通的“ . “

        System.out.println("a".matches("\\.")); // false
           // 此时 “ . ” 是一个普通的点

        System.out.println("1".matches("\\d"));  // true
        System.out.println("1".matches("[0-9]")); // true
          // 这两行代码是等效的

        System.out.println("a".matches("\\d")); // false
        System.out.println("19".matches("\\d\\d")); // true


        System.out.println("a".matches("\\w")); //  true
        System.out.println("1".matches("\\w")); //  true
        System.out.println("%".matches("\\w")); //  false
    }
}
